#!/usr/bin/enr/python3
# -*- coding: utf-8 -*-
# -------------------------------
# @Author : hurong
# @File : 07_class_def.py
# @Time : 2023/7/5 19:20
# -------------------------------
"""
面向对象
类：用了描述具有相同熟悉和方法的对象和集合。它定义了集合中每个对象所共有的属性和方法。

对象：类的实例，是一个具体存在的实体
"""
# 类的声明，父类object（若不写，默认是继承超类）
class Human(object):
    """人类"""
    # 定义属性（类属性）
    message = "这是类属性"


# 通过类名，访问类属性
print(Human.message)

"""类方法
实例方法：
# 作用--提供每个类的实例共享的方法
# 语法--def 方法名（self,参数列表）
# 访问--实例.方法名（参数列表）

---构造方法（实例化对象）；
# 语法：def __init__(self,参数列表)------

类方法：
# 作用：可以操作类的详细信息
# 语法：@classmethod
# 访问：类名.类方法名()

静态方法：
# 作用
# 语法：@staticmethod
# 访问:类名.类方法名（）

"""
# instance method实例方法
class Human:

    # 类属性
    population = 0
    # 定义实例方法
    def study(self,course):
        print(f"正在学习{course}")

#     类方法
    @classmethod
    def born(cls):
        print("这是类方法")
        cls.population += 1 # 访问类属性


#     静态方法
    @staticmethod
    def grow_up():
        print("这是静态方法")



# 实例化对象，类名（对象）
person = Human()
# 通过实例访问实例方法
person.study("python")

# 通过类名访问类方法
Human.born()
print(f"访问类属性的值，{Human.population}")

# 通过类名访问静态方法
Human.grow_up()

